Kotlin 的 Data class 預設包含以下 Function:
Function | 說明 |
---|---|
equals() |
判斷物件相等 |
hashCode() |
傳回 hash code 函式 |
toString() |
將屬性資料轉換為字串 |
copy() |
複製原有物件的屬性值,回傳一個新物件 |
componentN() |
產生與屬性宣告順序對應的讀取函式。例如在資料類別中宣告三個屬性,會自動產生三組 Function: component1() 、component2() 與 component3() ,分別傳回對應的屬性值。 |
右鍵專案資料夾 → 「New」 → 「Kotlin Class/File」 → 命名並選擇 「Data class」
於 Data class 建構式宣告屬性,後續用於存取資料欄位
data class Country (
val id: Int,
val name: String,
val currency: String,
val region: String,
val language: String
) {
...
}
若 Data class 僅具有資料欄位,無類別內容,可省略 {}
data class Country (
val id: Int,
val name: String,
val currency: String,
val region: String,
val language: String
)
建立物件實體
fun main() {
val countryUk = Country(1, "United Kingdom", "GBP", "Europe", "English")
val countryUs = Country(2, "United States", "USD", "North America", "English")
val countryUk2 = Country(1, "United Kingdom", "GBP", "Europe", "English")
//接續下方內容
}
toString()
:將屬性資料轉換為字串
//接續上方內容,寫於 main() function 中
println(countryUk.toString())
// output: Country(id=1, name=United Kingdom, currency=GBP, region=Europe, language=English)
equals()
:判斷物件是否相等
println(countryUk.equals(countryUk2))
// output: true
copy()
:複製為新的物件
val countryUs2 = countryUs.copy()
println(countryUs2)
// output: Country(id=2, name=United States, currency=USD, region=North America, language=English)
copy()
:指定部份的屬性複製一個新的物件
val countryUk3 = countryUk.copy(id = 3, name = "Canada", currency = "CAD")
println(countryUk3)
// output: Country(id=3, name=Canada, currency=CAD, "North America", "English")
componentN()
:取得屬性值
print(countryUk.component2())
// output: United Kingdom
直接取得屬性值
print(countryUs.name)
// output: United States